PhpParser(.*?))\\(#ms'; /** * @var string * @see https://regex101.com/r/uQFuvL/1 */ private const PROPERTY_KEY_REGEX = '#(?[\\w\\d]+)\\:#'; public function __construct(SymfonyStyle $symfonyStyle) { $this->symfonyStyle = $symfonyStyle; } /** * @param Node|Node[] $nodes */ public function printNodes($nodes) : void { $dumpedNodesContents = SimpleNodeDumper::dump($nodes); // colorize $colorContents = $this->addConsoleColors($dumpedNodesContents); $this->symfonyStyle->writeln($colorContents); $this->symfonyStyle->newLine(); } private function addConsoleColors(string $contents) : string { // decorate class names $colorContents = Strings::replace($contents, self::CLASS_NAME_REGEX, static function (array $match) : string { return '' . $match['class_name'] . '('; }); // decorate keys return Strings::replace($colorContents, self::PROPERTY_KEY_REGEX, static function (array $match) : string { return '' . $match['key'] . ':'; }); } }